/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2022年8月29日
 * V4.0
 */
package com.jphenix.webserver.api;

import com.jphenix.standard.docs.ClassInfo;
import com.jphenix.standard.servlet.api.ICookie;

/**
 * Cookie实例
 * 
 * 2022-09-04 重构了内置Servlet容器，不依赖外部ServletApi包
 * 
 * @author MBG
 * 2022年8月29日
 */
@ClassInfo({"2022-09-04 21:58","Cookie实例"})
public class CookieImpl implements ICookie {

	private String  comment  = null ;  // 注释
	private String  domain   = null ;  // 域
	private String  name     = null ;  // 名
	private String  value    = null ;  // 值
	private String  path     = null ;  // 路径
	private int     maxAge   = 0    ;  // 最大存活时间
	private int     version  = 0    ;  // 版本号
	private boolean secure   = false;  // 是否为安全Cookie
	private boolean httpOnly = false;  // 是否只存在于协议中
	
	/**
	 * 构造函数
	 * @author MBG
	 */
	public CookieImpl(String name,String value) {
		super();
		this.name  = name;
		this.value = value;
	}
	
	/**
	 * 构造函数
	 * @author MBG
	 */
	public CookieImpl(String name) {
		super();
		this.name  = name;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setComment(String purpose) {
		this.comment = purpose;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public String getComment() {
		return comment;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setDomain(String pattern) {
		this.domain = pattern;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public String getDomain() {
		return domain;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setMaxAge(int expiry) {
		this.maxAge = expiry;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public int getMaxAge() {
		return maxAge;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setPath(String uri) {
		this.path = uri;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public String getPath() {
		return path;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setSecure(boolean flag) {
		this.secure = flag;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public boolean getSecure() {
		return secure;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public String getName() {
		return name;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setValue(String newValue) {
		this.value = newValue;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public String getValue() {
		return value;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public int getVersion() {
		return version;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setVersion(int v) {
		this.version = v;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public ICookie clone() {
		CookieImpl res = new CookieImpl(name,value);
		res.domain   = domain;
		res.comment  = comment;
		res.maxAge   = maxAge;
		res.path     = path;
		res.version  = version;
		res.secure   = secure;
		res.httpOnly = httpOnly;
		return res;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public void setHttpOnly(boolean httpOnly) {
		this.httpOnly = httpOnly;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public boolean isHttpOnly() {
		return httpOnly;
	}

}
